<!DOCTYPE html>
<html>
 <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>乐客开门-家庭门锁(V1.0.0-测试场景点)</title> 
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
  <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
  <meta name="description" content="Nifty Modal Window Effects with CSS Transitions and Animations" /> 
  <meta name="keywords" content="modal, window, overlay, modern, box, css transition, css animation, effect, 3d, perspective" /> 
  <meta name="author" content="Codrops" /> 
  <link rel="stylesheet" type="text/css" href="css/default.css" /> 
  <link rel="stylesheet" type="text/css" href="css/component.css" /> 
  <link rel="stylesheet" href="css/style.css" media="screen" type="text/css" /> 
  <script src="js/modernizr.custom.js"></script> 
  <!-- http://www.jq22.com/jquery-info122
  <script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script>  
  <script src="http://www.htmleaf.com/js/jquery/1.10.2/jquery.min.js"></script> -->
  <script src="js/jquery.min.js"></script> 
  <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
  <script src="js/vue.min.js"></script> 
  <script src="https://unpkg.com/xlsx/dist/xlsx.core.min.js"></script>
  <style id="style" type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
        li{
            list-style: none;
        }
        .bullet{
            position: absolute;
            /* font-size: 0; */
            bottom: 20px;
            /* left: 0%;
            margin-left: 0px; */
        }
        .bullet span{
            display: inline-block;
            width: 10px;
            height: 10px;
            background-color: #C0C0C0;
            margin-left: 15px;
            border-radius: 10px;
        }
        .bullet span:first-child{
            margin-left: 0;
        }
        .switch{

        }
        .switch span{
            position: absolute;
            width: 50px;
            height: 50px;
            line-height: 50px;
            text-align: center;
            background-color: rgba(0,0,0,.0);
            font-size: 20px;
            color: #ffffff;
            top: 50%;
            margin-top: -25px;
            cursor: pointer;
            font-family: "宋体";
        }
        .switch span:hover{
            background-color: rgba(0,0,0,.5);
        }
        .prev{
            left: 0;
        }
        .next{
            right: 0;
        }
        .active{
            background-color: Tomato !important;
        }
  body {
  width: 60em;
  border: 1px solid #ddd;
  outline: 1300px solid #fff;
  margin: 16px auto;
}

body .markdown-body
{
  padding: 30px;
}

@font-face {
  font-family: fontawesome-mini;
  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
}

@font-face {
  font-family: octicons-anchor;
  src: url(data:font/woff;charset=utf-8;base64,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) format('woff');
}

.markdown-body {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  color: #333333;
  overflow: hidden;
  font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
  font-size: 16px;
  line-height: 1.6;
  word-wrap: break-word;
}

.markdown-body a {
  background: transparent;
}

.markdown-body a:active,
.markdown-body a:hover {
  outline: 0;
}

.markdown-body b,
.markdown-body strong {
  font-weight: bold;
}

.markdown-body mark {
  background: #ff0;
  color: #000;
  font-style: italic;
  font-weight: bold;
}

.markdown-body sub,
.markdown-body sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
.markdown-body sup {
  top: -0.5em;
}
.markdown-body sub {
  bottom: -0.25em;
}

.markdown-body h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

.markdown-body img {
  border: 0;
}

.markdown-body hr {
  -moz-box-sizing: content-box;
  box-sizing: content-box;
  height: 0;
}

.markdown-body pre {
  overflow: auto;
}

.markdown-body code,
.markdown-body kbd,
.markdown-body pre,
.markdown-body samp {
  font-family: monospace, monospace;
  font-size: 1em;
}

.markdown-body input {
  color: inherit;
  font: inherit;
  margin: 0;
}

.markdown-body html input[disabled] {
  cursor: default;
}

.markdown-body input {
  line-height: normal;
}

.markdown-body input[type="checkbox"] {
  box-sizing: border-box;
  padding: 0;
}

.markdown-body table {
  border-collapse: collapse;
  border-spacing: 0;
}

.markdown-body td,
.markdown-body th {
  padding: 0;
}

.markdown-body .codehilitetable {
  border: 0;
  border-spacing: 0;
}

.markdown-body .codehilitetable tr {
  border: 0;
}

.markdown-body .codehilitetable pre,
.markdown-body .codehilitetable div.codehilite {
  margin: 0;
}

.markdown-body .linenos,
.markdown-body .code,
.markdown-body .codehilitetable td {
  border: 0;
  padding: 0;
}

.markdown-body td:not(.linenos) .linenodiv {
  padding: 0 !important;
}

.markdown-body .code {
  width: 100%;
}

.markdown-body .linenos div pre,
.markdown-body .linenodiv pre,
.markdown-body .linenodiv {
  border: 0;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
  -webkit-border-top-left-radius: 3px;
  -webkit-border-bottom-left-radius: 3px;
  -moz-border-radius-topleft: 3px;
  -moz-border-radius-bottomleft: 3px;
  border-top-left-radius: 3px;
  border-bottom-left-radius: 3px;
}

.markdown-body .code div pre,
.markdown-body .code div {
  border: 0;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
  -webkit-border-top-right-radius: 3px;
  -webkit-border-bottom-right-radius: 3px;
  -moz-border-radius-topright: 3px;
  -moz-border-radius-bottomright: 3px;
  border-top-right-radius: 3px;
  border-bottom-right-radius: 3px;
}

.markdown-body * {
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.markdown-body input {
  font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
  line-height: 1.4;
}

.markdown-body a {
  color: #4183c4;
  text-decoration: none;
}

.markdown-body a:hover,
.markdown-body a:focus,
.markdown-body a:active {
  text-decoration: underline;
}

.markdown-body hr {
  height: 0;
  margin: 15px 0;
  overflow: hidden;
  background: transparent;
  border: 0;
  border-bottom: 1px solid #ddd;
}

.markdown-body hr:before,
.markdown-body hr:after {
  display: table;
  content: " ";
}

.markdown-body hr:after {
  clear: both;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
  margin-top: 15px;
  margin-bottom: 15px;
  line-height: 1.1;
}

.markdown-body h1 {
  font-size: 30px;
}

.markdown-body h2 {
  font-size: 21px;
}

.markdown-body h3 {
  font-size: 16px;
}

.markdown-body h4 {
  font-size: 14px;
}

.markdown-body h5 {
  font-size: 12px;
}

.markdown-body h6 {
  font-size: 11px;
}

.markdown-body blockquote {
  margin: 0;
}

.markdown-body ul,
.markdown-body ol {
  padding: 0;
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body ol ol,
.markdown-body ul ol {
  list-style-type: lower-roman;
}

.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
  list-style-type: lower-alpha;
}

.markdown-body dd {
  margin-left: 0;
}

.markdown-body code,
.markdown-body pre,
.markdown-body samp {
  font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: 12px;
}

.markdown-body pre {
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body kbd {
  background-color: #e7e7e7;
  background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
  background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
  background-image: linear-gradient(#fefefe, #e7e7e7);
  background-repeat: repeat-x;
  border-radius: 2px;
  border: 1px solid #cfcfcf;
  color: #000;
  padding: 3px 5px;
  line-height: 10px;
  font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
  display: inline-block;
}

.markdown-body>*:first-child {
  margin-top: 0 !important;
}

.markdown-body>*:last-child {
  margin-bottom: 0 !important;
}

.markdown-body .headeranchor-link {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  display: block;
  padding-right: 6px;
  padding-left: 30px;
  margin-left: -30px;
}

.markdown-body .headeranchor-link:focus {
  outline: none;
}

.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
  position: relative;
  margin-top: 1em;
  margin-bottom: 16px;
  font-weight: bold;
  line-height: 1.4;
}

.markdown-body h1 .headeranchor,
.markdown-body h2 .headeranchor,
.markdown-body h3 .headeranchor,
.markdown-body h4 .headeranchor,
.markdown-body h5 .headeranchor,
.markdown-body h6 .headeranchor {
  display: none;
  color: #000;
  vertical-align: middle;
}

.markdown-body h1:hover .headeranchor-link,
.markdown-body h2:hover .headeranchor-link,
.markdown-body h3:hover .headeranchor-link,
.markdown-body h4:hover .headeranchor-link,
.markdown-body h5:hover .headeranchor-link,
.markdown-body h6:hover .headeranchor-link {
  height: 1em;
  padding-left: 8px;
  margin-left: -30px;
  line-height: 1;
  text-decoration: none;
}

.markdown-body h1:hover .headeranchor-link .headeranchor,
.markdown-body h2:hover .headeranchor-link .headeranchor,
.markdown-body h3:hover .headeranchor-link .headeranchor,
.markdown-body h4:hover .headeranchor-link .headeranchor,
.markdown-body h5:hover .headeranchor-link .headeranchor,
.markdown-body h6:hover .headeranchor-link .headeranchor {
  display: inline-block;
}

.markdown-body h1 {
  padding-bottom: 0.3em;
  font-size: 2.25em;
  line-height: 1.2;
  border-bottom: 1px solid #eee;
}

.markdown-body h2 {
  padding-bottom: 0.3em;
  font-size: 1.75em;
  line-height: 1.225;
  border-bottom: 1px solid #eee;
}

.markdown-body h3 {
  font-size: 1.5em;
  line-height: 1.43;
}

.markdown-body h4 {
  font-size: 1.25em;
}

.markdown-body h5 {
  font-size: 1em;
}

.markdown-body h6 {
  font-size: 1em;
  color: #777;
}

.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre,
.markdown-body .admonition {
  margin-top: 0;
  margin-bottom: 16px;
}

.markdown-body hr {
  height: 4px;
  padding: 0;
  margin: 16px 0;
  background-color: #e7e7e7;
  border: 0 none;
}

.markdown-body ul,
.markdown-body ol {
  padding-left: 2em;
}

.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
  margin-top: 0;
  margin-bottom: 0;
}

.markdown-body li>p {
  margin-top: 16px;
}

.markdown-body dl {
  padding: 0;
}

.markdown-body dl dt {
  padding: 0;
  margin-top: 16px;
  font-size: 1em;
  font-style: italic;
  font-weight: bold;
}

.markdown-body dl dd {
  padding: 0 16px;
  margin-bottom: 16px;
}

.markdown-body blockquote {
  padding: 0 15px;
  color: #777;
  border-left: 4px solid #ddd;
}

.markdown-body blockquote>:first-child {
  margin-top: 0;
}

.markdown-body blockquote>:last-child {
  margin-bottom: 0;
}

.markdown-body table {
  display: block;
  width: 100%;
  overflow: auto;
  word-break: normal;
  word-break: keep-all;
}

.markdown-body table th {
  font-weight: bold;
}

.markdown-body table th,
.markdown-body table td {
  padding: 6px 13px;
  border: 1px solid #ddd;
}

.markdown-body table tr {
  background-color: #fff;
  border-top: 1px solid #ccc;
}

.markdown-body table tr:nth-child(2n) {
  background-color: #f8f8f8;
}

.markdown-body img {
  max-width: 100%;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.markdown-body code,
.markdown-body samp {
  padding: 0;
  padding-top: 0.2em;
  padding-bottom: 0.2em;
  margin: 0;
  font-size: 85%;
  background-color: rgba(0,0,0,0.04);
  border-radius: 3px;
}

.markdown-body code:before,
.markdown-body code:after {
  letter-spacing: -0.2em;
  content: "\00a0";
}

.markdown-body pre>code {
  padding: 0;
  margin: 0;
  font-size: 100%;
  word-break: normal;
  white-space: pre;
  background: transparent;
  border: 0;
}

.markdown-body .codehilite {
  margin-bottom: 16px;
}

.markdown-body .codehilite pre,
.markdown-body pre {
  padding: 16px;
  overflow: auto;
  font-size: 85%;
  line-height: 1.45;
  background-color: #f7f7f7;
  border-radius: 3px;
}

.markdown-body .codehilite pre {
  margin-bottom: 0;
  word-break: normal;
}

.markdown-body pre {
  word-wrap: normal;
}

.markdown-body pre code {
  display: inline;
  max-width: initial;
  padding: 0;
  margin: 0;
  overflow: initial;
  line-height: inherit;
  word-wrap: normal;
  background-color: transparent;
  border: 0;
}

.markdown-body pre code:before,
.markdown-body pre code:after {
  content: normal;
}

/* Admonition */
.markdown-body .admonition {
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  position: relative;
  border-radius: 3px;
  border: 1px solid #e0e0e0;
  border-left: 6px solid #333;
  padding: 10px 10px 10px 30px;
}

.markdown-body .admonition table {
  color: #333;
}

.markdown-body .admonition p {
  padding: 0;
}

.markdown-body .admonition-title {
  font-weight: bold;
  margin: 0;
}

.markdown-body .admonition>.admonition-title {
  color: #333;
}

.markdown-body .attention>.admonition-title {
  color: #a6d796;
}

.markdown-body .caution>.admonition-title {
  color: #d7a796;
}

.markdown-body .hint>.admonition-title {
  color: #96c6d7;
}

.markdown-body .danger>.admonition-title {
  color: #c25f77;
}

.markdown-body .question>.admonition-title {
  color: #96a6d7;
}

.markdown-body .note>.admonition-title {
  color: #d7c896;
}

.markdown-body .admonition:before,
.markdown-body .attention:before,
.markdown-body .caution:before,
.markdown-body .hint:before,
.markdown-body .danger:before,
.markdown-body .question:before,
.markdown-body .note:before {
  font: normal normal 16px fontawesome-mini;
  -moz-osx-font-smoothing: grayscale;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  line-height: 1.5;
  color: #333;
  position: absolute;
  left: 0;
  top: 0;
  padding-top: 10px;
  padding-left: 10px;
}

.markdown-body .admonition:before {
  content: "\f056\00a0";
  color: 333;
}

.markdown-body .attention:before {
  content: "\f058\00a0";
  color: #a6d796;
}

.markdown-body .caution:before {
  content: "\f06a\00a0";
  color: #d7a796;
}

.markdown-body .hint:before {
  content: "\f05a\00a0";
  color: #96c6d7;
}

.markdown-body .danger:before {
  content: "\f057\00a0";
  color: #c25f77;
}

.markdown-body .question:before {
  content: "\f059\00a0";
  color: #96a6d7;
}

.markdown-body .note:before {
  content: "\f040\00a0";
  color: #d7c896;
}

.markdown-body .admonition::after {
  content: normal;
}

.markdown-body .attention {
  border-left: 6px solid #a6d796;
}

.markdown-body .caution {
  border-left: 6px solid #d7a796;
}

.markdown-body .hint {
  border-left: 6px solid #96c6d7;
}

.markdown-body .danger {
  border-left: 6px solid #c25f77;
}

.markdown-body .question {
  border-left: 6px solid #96a6d7;
}

.markdown-body .note {
  border-left: 6px solid #d7c896;
}

.markdown-body .admonition>*:first-child {
  margin-top: 0 !important;
}

.markdown-body .admonition>*:last-child {
  margin-bottom: 0 !important;
}

/* progress bar*/
.markdown-body .progress {
  display: block;
  width: 300px;
  margin: 10px 0;
  height: 24px;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  background-color: #ededed;
  position: relative;
  box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
}

.markdown-body .progress-label {
  position: absolute;
  text-align: center;
  font-weight: bold;
  width: 100%; margin: 0;
  line-height: 24px;
  color: #333;
  text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
  -webkit-font-smoothing: antialiased !important;
  white-space: nowrap;
  overflow: hidden;
}

.markdown-body .progress-bar {
  height: 24px;
  float: left;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  background-color: #96c6d7;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0, 0, 0, .1);
  background-size: 30px 30px;
  background-image: -webkit-linear-gradient(
    135deg, rgba(255, 255, 255, .4) 27%,
    transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%,
    transparent 77%, transparent
  );
  background-image: -moz-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: -ms-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: -o-linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
  background-image: linear-gradient(
    135deg,
    rgba(255, 255, 255, .4) 27%, transparent 27%,
    transparent 52%, rgba(255, 255, 255, .4) 52%,
    rgba(255, 255, 255, .4) 77%, transparent 77%,
    transparent
  );
}

.markdown-body .progress-100plus .progress-bar {
  background-color: #a6d796;
}

.markdown-body .progress-80plus .progress-bar {
  background-color: #c6d796;
}

.markdown-body .progress-60plus .progress-bar {
  background-color: #d7c896;
}

.markdown-body .progress-40plus .progress-bar {
  background-color: #d7a796;
}

.markdown-body .progress-20plus .progress-bar {
  background-color: #d796a6;
}

.markdown-body .progress-0plus .progress-bar {
  background-color: #c25f77;
}

.markdown-body .candystripe-animate .progress-bar{
  -webkit-animation: animate-stripes 3s linear infinite;
  -moz-animation: animate-stripes 3s linear infinite;
  animation: animate-stripes 3s linear infinite;
}

@-webkit-keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

@-moz-keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

@keyframes animate-stripes {
  0% {
    background-position: 0 0;
  }

  100% {
    background-position: 60px 0;
  }
}

.markdown-body .gloss .progress-bar {
  box-shadow:
    inset 0 4px 12px rgba(255, 255, 255, .7),
    inset 0 -12px 0 rgba(0, 0, 0, .05);
}

/* Multimarkdown Critic Blocks */
.markdown-body .critic_mark {
  background: #ff0;
}

.markdown-body .critic_delete {
  color: #c82829;
  text-decoration: line-through;
}

.markdown-body .critic_insert {
  color: #718c00 ;
  text-decoration: underline;
}

.markdown-body .critic_comment {
  color: #8e908c;
  font-style: italic;
}

.markdown-body .headeranchor {
  font: normal normal 16px octicons-anchor;
  line-height: 1;
  display: inline-block;
  text-decoration: none;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.headeranchor:before {
  content: '\f05c';
}

.markdown-body .task-list-item {
  list-style-type: none;
}

.markdown-body .task-list-item+.task-list-item {
  margin-top: 3px;
}

.markdown-body .task-list-item input {
  margin: 0 4px 0.25em -20px;
  vertical-align: middle;
}

/* Media */
@media only screen and (min-width: 480px) {
  .markdown-body {
    font-size:14px;
  }
}

@media only screen and (min-width: 768px) {
  .markdown-body {
    font-size:16px;
  }
}

@media print {
  .markdown-body * {
    background: transparent !important;
    color: black !important;
    filter:none !important;
    -ms-filter: none !important;
  }

  .markdown-body {
    font-size:12pt;
    max-width:100%;
    outline:none;
    border: 0;
  }

  .markdown-body a,
  .markdown-body a:visited {
    text-decoration: underline;
  }

  .markdown-body .headeranchor-link {
    display: none;
  }

  .markdown-body a[href]:after {
    content: " (" attr(href) ")";
  }

  .markdown-body abbr[title]:after {
    content: " (" attr(title) ")";
  }

  .markdown-body .ir a:after,
  .markdown-body a[href^="javascript:"]:after,
  .markdown-body a[href^="#"]:after {
    content: "";
  }

  .markdown-body pre {
    white-space: pre;
    white-space: pre-wrap;
    word-wrap: break-word;
  }

  .markdown-body pre,
  .markdown-body blockquote {
    border: 1px solid #999;
    padding-right: 1em;
    page-break-inside: avoid;
  }

  .markdown-body .progress,
  .markdown-body .progress-bar {
    -moz-box-shadow: none;
    -webkit-box-shadow: none;
    box-shadow: none;
  }

  .markdown-body .progress {
    border: 1px solid #ddd;
  }

  .markdown-body .progress-bar {
    height: 22px;
    border-right: 1px solid #ddd;
  }

  .markdown-body tr,
  .markdown-body img {
    page-break-inside: avoid;
  }

  .markdown-body img {
    max-width: 100% !important;
  }

  .markdown-body p,
  .markdown-body h2,
  .markdown-body h3 {
    orphans: 3;
    widows: 3;
  }

  .markdown-body h2,
  .markdown-body h3 {
    page-break-after: avoid;
  }
}
</style> 
 </head> 
 <body> 
  <article class="markdown-body"> 
   <meta charset="utf-8" /> 
   <link rel="stylesheet" href="css/animate.min.css" /> 
   <style type="text/css">
      body { width: 80em; border: 1px solid #ddd; outline: 1300px solid #fff;
      margin: 16px auto; } body .markdown-body { padding: 30px; } @font-face
      { font-family: fontawesome-mini; src: url(data:font/woff;charset=utf-8;base64,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)
      format('woff'); } @font-face { font-family: octicons-anchor; src: url(data:font/woff;charset=utf-8;base64,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)
      format('woff'); } .markdown-body { font-family: sans-serif; -ms-text-size-adjust:
      100%; -webkit-text-size-adjust: 100%; color: #333333; overflow: hidden;
      font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans,
      sans-serif; font-size: 16px; line-height: 1.6; word-wrap: break-word; }
      .markdown-body a { background: transparent; } .markdown-body a:active,
      .markdown-body a:hover { outline: 0; } .markdown-body b, .markdown-body
      strong { font-weight: bold; } .markdown-body mark { background: #ff0; color:
      #000; font-style: italic; font-weight: bold; } .markdown-body sub, .markdown-body
      sup { font-size: 75%; line-height: 0; position: relative; vertical-align:
      baseline; } .markdown-body sup { top: -0.5em; } .markdown-body sub { bottom:
      -0.25em; } .markdown-body h1 { font-size: 2em; margin: 0.67em 0; } .markdown-body
      img { border: 0; } .markdown-body hr { -moz-box-sizing: content-box; box-sizing:
      content-box; height: 0; } .markdown-body pre { overflow: auto; } .markdown-body
      code, .markdown-body kbd, .markdown-body pre, .markdown-body samp { font-family:
      monospace, monospace; font-size: 1em; } .markdown-body input { color: inherit;
      font: inherit; margin: 0; } .markdown-body html input[disabled] { cursor:
      default; } .markdown-body input { line-height: normal; } .markdown-body
      input[type="checkbox"] { box-sizing: border-box; padding: 0; } .markdown-body
      table { border-collapse: collapse; border-spacing: 0; } .markdown-body
      td, .markdown-body th { padding: 0; } .markdown-body .codehilitetable {
      border: 0; border-spacing: 0; } .markdown-body .codehilitetable tr { border:
      0; } .markdown-body .codehilitetable pre, .markdown-body .codehilitetable
      div.codehilite { margin: 0; } .markdown-body .linenos, .markdown-body .code,
      .markdown-body .codehilitetable td { border: 0; padding: 0; } .markdown-body
      td:not(.linenos) .linenodiv { padding: 0 !important; } .markdown-body .code
      { width: 100%; } .markdown-body .linenos div pre, .markdown-body .linenodiv
      pre, .markdown-body .linenodiv { border: 0; -webkit-border-radius: 0; -moz-border-radius:
      0; border-radius: 0; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius:
      3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px;
      border-top-left-radius: 3px; border-bottom-left-radius: 3px; } .markdown-body
      .code div pre, .markdown-body .code div { border: 0; -webkit-border-radius:
      0; -moz-border-radius: 0; border-radius: 0; -webkit-border-top-right-radius:
      3px; -webkit-border-bottom-right-radius: 3px; -moz-border-radius-topright:
      3px; -moz-border-radius-bottomright: 3px; border-top-right-radius: 3px;
      border-bottom-right-radius: 3px; } .markdown-body * { -moz-box-sizing:
      border-box; box-sizing: border-box; } .markdown-body input { font: 13px
      Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe
      UI Symbol"; line-height: 1.4; } .markdown-body a { color: #4183c4; text-decoration:
      none; } .markdown-body a:hover, .markdown-body a:focus, .markdown-body
      a:active { text-decoration: underline; } .markdown-body hr { height: 0;
      margin: 15px 0; overflow: hidden; background: transparent; border: 0; border-bottom:
      1px solid #ddd; } .markdown-body hr:before, .markdown-body hr:after { display:
      table; content: " "; } .markdown-body hr:after { clear: both; } .markdown-body
      h1, .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body
      h5, .markdown-body h6 { margin-top: 15px; margin-bottom: 15px; line-height:
      1.1; } .markdown-body h1 { font-size: 30px; } .markdown-body h2 { font-size:
      21px; } .markdown-body h3 { font-size: 16px; } .markdown-body h4 { font-size:
      14px; } .markdown-body h5 { font-size: 12px; } .markdown-body h6 { font-size:
      11px; } .markdown-body blockquote { margin: 0; } .markdown-body ul, .markdown-body
      ol { padding: 0; margin-top: 0; margin-bottom: 0; } .markdown-body ol ol,
      .markdown-body ul ol { list-style-type: lower-roman; } .markdown-body ul
      ul ol, .markdown-body ul ol ol, .markdown-body ol ul ol, .markdown-body
      ol ol ol { list-style-type: lower-alpha; } .markdown-body dd { margin-left:
      0; } .markdown-body code, .markdown-body pre, .markdown-body samp { font-family:
      Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 12px;
      } .markdown-body pre { margin-top: 0; margin-bottom: 0; } .markdown-body
      kbd { background-color: #e7e7e7; background-image: -moz-linear-gradient(#fefefe,
      #e7e7e7); background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
      background-image: linear-gradient(#fefefe, #e7e7e7); background-repeat:
      repeat-x; border-radius: 2px; border: 1px solid #cfcfcf; color: #000; padding:
      3px 5px; line-height: 10px; font: 11px Consolas, "Liberation Mono", Menlo,
      Courier, monospace; display: inline-block; } .markdown-body>*:first-child
      { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom:
      0 !important; } .markdown-body .headeranchor-link { position: absolute;
      top: 0; bottom: 0; left: 0; display: block; padding-right: 6px; padding-left:
      30px; margin-left: -30px; } .markdown-body .headeranchor-link:focus { outline:
      none; } .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body
      h4, .markdown-body h5, .markdown-body h6 { position: relative; margin-top:
      1em; margin-bottom: 16px; font-weight: bold; line-height: 1.4; } .markdown-body
      h1 .headeranchor, .markdown-body h2 .headeranchor, .markdown-body h3 .headeranchor,
      .markdown-body h4 .headeranchor, .markdown-body h5 .headeranchor, .markdown-body
      h6 .headeranchor { display: none; color: #000; vertical-align: middle;
      } .markdown-body h1:hover .headeranchor-link, .markdown-body h2:hover .headeranchor-link,
      .markdown-body h3:hover .headeranchor-link, .markdown-body h4:hover .headeranchor-link,
      .markdown-body h5:hover .headeranchor-link, .markdown-body h6:hover .headeranchor-link
      { height: 1em; padding-left: 8px; margin-left: -30px; line-height: 1; text-decoration:
      none; } .markdown-body h1:hover .headeranchor-link .headeranchor, .markdown-body
      h2:hover .headeranchor-link .headeranchor, .markdown-body h3:hover .headeranchor-link
      .headeranchor, .markdown-body h4:hover .headeranchor-link .headeranchor,
      .markdown-body h5:hover .headeranchor-link .headeranchor, .markdown-body
      h6:hover .headeranchor-link .headeranchor { display: inline-block; } .markdown-body
      h1 { padding-bottom: 0.3em; font-size: 2.25em; line-height: 1.2; border-bottom:
      1px solid #eee; } .markdown-body h2 { padding-bottom: 0.3em; font-size:
      1.75em; line-height: 1.225; border-bottom: 1px solid #eee; } .markdown-body
      h3 { font-size: 1.5em; line-height: 1.43; } .markdown-body h4 { font-size:
      1.25em; } .markdown-body h5 { font-size: 1em; } .markdown-body h6 { font-size:
      1em; color: #777; } .markdown-body p, .markdown-body blockquote, .markdown-body
      ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body
      pre, .markdown-body .admonition { margin-top: 0; margin-bottom: 16px; }
      .markdown-body hr { height: 4px; padding: 0; margin: 16px 0; background-color:
      #e7e7e7; border: 0 none; } .markdown-body ul, .markdown-body ol { padding-left:
      2em; } .markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol,
      .markdown-body ol ul { margin-top: 0; margin-bottom: 0; } .markdown-body
      li>p { margin-top: 16px; } .markdown-body dl { padding: 0; } .markdown-body
      dl dt { padding: 0; margin-top: 16px; font-size: 1em; font-style: italic;
      font-weight: bold; } .markdown-body dl dd { padding: 0 16px; margin-bottom:
      16px; } .markdown-body blockquote { padding: 0 15px; color: #777; border-left:
      4px solid #ddd; } .markdown-body blockquote>:first-child { margin-top:
      0; } .markdown-body blockquote>:last-child { margin-bottom: 0; } .markdown-body
      table { display: block; width: 100%; overflow: auto; word-break: normal;
      word-break: keep-all; } .markdown-body table th { font-weight: bold; }
      .markdown-body table th, .markdown-body table td { padding: 6px 13px; border:
      1px solid #ddd; } .markdown-body table tr { background-color: #fff; border-top:
      1px solid #ccc; } .markdown-body table tr:nth-child(2n) { background-color:
      #f8f8f8; } .markdown-body img { max-width: 100%; -moz-box-sizing: border-box;
      box-sizing: border-box; } .markdown-body code, .markdown-body samp { padding:
      0; padding-top: 0.2em; padding-bottom: 0.2em; margin: 0; font-size: 85%;
      background-color: rgba(0,0,0,0.04); border-radius: 3px; } .markdown-body
      code:before, .markdown-body code:after { letter-spacing: -0.2em; content:
      "\00a0"; } .markdown-body pre>code { padding: 0; margin: 0; font-size:
      100%; word-break: normal; white-space: pre; background: transparent; border:
      0; } .markdown-body .codehilite { margin-bottom: 16px; } .markdown-body
      .codehilite pre, .markdown-body pre { padding: 16px; overflow: auto; font-size:
      85%; line-height: 1.45; background-color: #f7f7f7; border-radius: 3px;
      } .markdown-body .codehilite pre { margin-bottom: 0; word-break: normal;
      } .markdown-body pre { word-wrap: normal; } .markdown-body pre code { display:
      inline; max-width: initial; padding: 0; margin: 0; overflow: initial; line-height:
      inherit; word-wrap: normal; background-color: transparent; border: 0; }
      .markdown-body pre code:before, .markdown-body pre code:after { content:
      normal; } /* Admonition */ .markdown-body .admonition { -webkit-border-radius:
      3px; -moz-border-radius: 3px; position: relative; border-radius: 3px; border:
      1px solid #e0e0e0; border-left: 6px solid #333; padding: 10px 10px 10px
      30px; } .markdown-body .admonition table { color: #333; } .markdown-body
      .admonition p { padding: 0; } .markdown-body .admonition-title { font-weight:
      bold; margin: 0; } .markdown-body .admonition>.admonition-title { color:
      #333; } .markdown-body .attention>.admonition-title { color: #a6d796; }
      .markdown-body .caution>.admonition-title { color: #d7a796; } .markdown-body
      .hint>.admonition-title { color: #96c6d7; } .markdown-body .danger>.admonition-title
      { color: #c25f77; } .markdown-body .question>.admonition-title { color:
      #96a6d7; } .markdown-body .note>.admonition-title { color: #d7c896; } .markdown-body
      .admonition:before, .markdown-body .attention:before, .markdown-body .caution:before,
      .markdown-body .hint:before, .markdown-body .danger:before, .markdown-body
      .question:before, .markdown-body .note:before { font: normal normal 16px
      fontawesome-mini; -moz-osx-font-smoothing: grayscale; -webkit-user-select:
      none; -moz-user-select: none; -ms-user-select: none; user-select: none;
      line-height: 1.5; color: #333; position: absolute; left: 0; top: 0; padding-top:
      10px; padding-left: 10px; } .markdown-body .admonition:before { content:
      "\f056\00a0"; color: 333; } .markdown-body .attention:before { content:
      "\f058\00a0"; color: #a6d796; } .markdown-body .caution:before { content:
      "\f06a\00a0"; color: #d7a796; } .markdown-body .hint:before { content:
      "\f05a\00a0"; color: #96c6d7; } .markdown-body .danger:before { content:
      "\f057\00a0"; color: #c25f77; } .markdown-body .question:before { content:
      "\f059\00a0"; color: #96a6d7; } .markdown-body .note:before { content:
      "\f040\00a0"; color: #d7c896; } .markdown-body .admonition::after { content:
      normal; } .markdown-body .attention { border-left: 6px solid #a6d796; }
      .markdown-body .caution { border-left: 6px solid #d7a796; } .markdown-body
      .hint { border-left: 6px solid #96c6d7; } .markdown-body .danger { border-left:
      6px solid #c25f77; } .markdown-body .question { border-left: 6px solid
      #96a6d7; } .markdown-body .note { border-left: 6px solid #d7c896; } .markdown-body
      .admonition>*:first-child { margin-top: 0 !important; } .markdown-body
      .admonition>*:last-child { margin-bottom: 0 !important; } /* progress bar*/
      .markdown-body .progress { display: block; width: 300px; margin: 10px 0;
      height: 24px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius:
      3px; background-color: #ededed; position: relative; box-shadow: inset -1px
      1px 3px rgba(0, 0, 0, .1); } .markdown-body .progress-label { position:
      absolute; text-align: center; font-weight: bold; width: 100%; margin: 0;
      line-height: 24px; color: #333; text-shadow: 1px 1px 0 #fefefe, -1px -1px
      0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px
      0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000; -webkit-font-smoothing:
      antialiased !important; white-space: nowrap; overflow: hidden; } .markdown-body
      .progress-bar { height: 24px; float: left; -webkit-border-radius: 3px;
      -moz-border-radius: 3px; border-radius: 3px; background-color: #96c6d7;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0,
      0, 0, .1); background-size: 30px 30px; background-image: -webkit-linear-gradient(
      135deg, rgba(255, 255, 255, .4) 27%, transparent 27%, transparent 52%,
      rgba(255, 255, 255, .4) 52%, rgba(255, 255, 255, .4) 77%, transparent 77%,
      transparent ); background-image: -moz-linear-gradient( 135deg, rgba(255,
      255, 255, .4) 27%, transparent 27%, transparent 52%, rgba(255, 255, 255,
      .4) 52%, rgba(255, 255, 255, .4) 77%, transparent 77%, transparent ); background-image:
      -ms-linear-gradient( 135deg, rgba(255, 255, 255, .4) 27%, transparent 27%,
      transparent 52%, rgba(255, 255, 255, .4) 52%, rgba(255, 255, 255, .4) 77%,
      transparent 77%, transparent ); background-image: -o-linear-gradient( 135deg,
      rgba(255, 255, 255, .4) 27%, transparent 27%, transparent 52%, rgba(255,
      255, 255, .4) 52%, rgba(255, 255, 255, .4) 77%, transparent 77%, transparent
      ); background-image: linear-gradient( 135deg, rgba(255, 255, 255, .4) 27%,
      transparent 27%, transparent 52%, rgba(255, 255, 255, .4) 52%, rgba(255,
      255, 255, .4) 77%, transparent 77%, transparent ); } .markdown-body .progress-100plus
      .progress-bar { background-color: #a6d796; } .markdown-body .progress-80plus
      .progress-bar { background-color: #c6d796; } .markdown-body .progress-60plus
      .progress-bar { background-color: #d7c896; } .markdown-body .progress-40plus
      .progress-bar { background-color: #d7a796; } .markdown-body .progress-20plus
      .progress-bar { background-color: #d796a6; } .markdown-body .progress-0plus
      .progress-bar { background-color: #c25f77; } .markdown-body .candystripe-animate
      .progress-bar{ -webkit-animation: animate-stripes 3s linear infinite; -moz-animation:
      animate-stripes 3s linear infinite; animation: animate-stripes 3s linear
      infinite; } @-webkit-keyframes animate-stripes { 0% { background-position:
      0 0; } 100% { background-position: 60px 0; } } @-moz-keyframes animate-stripes
      { 0% { background-position: 0 0; } 100% { background-position: 60px 0;
      } } @keyframes animate-stripes { 0% { background-position: 0 0; } 100%
      { background-position: 60px 0; } } .markdown-body .gloss .progress-bar
      { box-shadow: inset 0 4px 12px rgba(255, 255, 255, .7), inset 0 -12px 0
      rgba(0, 0, 0, .05); } /* Multimarkdown Critic Blocks */ .markdown-body
      .critic_mark { background: #ff0; } .markdown-body .critic_delete { color:
      #c82829; text-decoration: line-through; } .markdown-body .critic_insert
      { color: #718c00 ; text-decoration: underline; } .markdown-body .critic_comment
      { color: #8e908c; font-style: italic; } .markdown-body .headeranchor {
      font: normal normal 16px octicons-anchor; line-height: 1; display: inline-block;
      text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing:
      grayscale; -webkit-user-select: none; -moz-user-select: none; -ms-user-select:
      none; user-select: none; } .headeranchor:before { content: '\f05c'; } .markdown-body
      .task-list-item { list-style-type: none; } .markdown-body .task-list-item+.task-list-item
      { margin-top: 3px; } .markdown-body .task-list-item input { margin: 0 4px
      0.25em -20px; vertical-align: middle; } /* Media */ @media only screen
      and (min-width: 480px) { .markdown-body { font-size:14px; } } @media only
      screen and (min-width: 768px) { .markdown-body { font-size:16px; } } @media
      print { .markdown-body * { background: transparent !important; color: black
      !important; filter:none !important; -ms-filter: none !important; } .markdown-body
      { font-size:12pt; max-width:100%; outline:none; border: 0; } .markdown-body
      a, .markdown-body a:visited { text-decoration: underline; } .markdown-body
      .headeranchor-link { display: none; } .markdown-body a[href]:after { content:
      " (" attr(href) ")"; } .markdown-body abbr[title]:after { content: " ("
      attr(title) ")"; } .markdown-body .ir a:after, .markdown-body a[href^="javascript:"]:after,
      .markdown-body a[href^="#"]:after { content: ""; } .markdown-body pre {
      white-space: pre; white-space: pre-wrap; word-wrap: break-word; } .markdown-body
      pre, .markdown-body blockquote { border: 1px solid #999; padding-right:
      1em; page-break-inside: avoid; } .markdown-body .progress, .markdown-body
      .progress-bar { -moz-box-shadow: none; -webkit-box-shadow: none; box-shadow:
      none; } .markdown-body .progress { border: 1px solid #ddd; } .markdown-body
      .progress-bar { height: 22px; border-right: 1px solid #ddd; } .markdown-body
      tr, .markdown-body img { page-break-inside: avoid; } .markdown-body img
      { max-width: 100% !important; } .markdown-body p, .markdown-body h2, .markdown-body
      h3 { orphans: 3; widows: 3; } .markdown-body h2, .markdown-body h3 { page-break-after:
      avoid; } }
    </style> 
   <title>
      乐客开门-家庭门锁(V1.0.0-测试场景点)
    </title> 
   <article class="markdown-body"> 
    <div class="toc"> 
     <ul> 
      <li> <a href="#-v100-"> 乐客开门-家庭门锁(V1.0.0-测试场景点) </a> 
       <ul> 
        <li> <a href="#_-1"> 功能模块： </a> 
         <ul id="doc"> 
         </ul> </li> 
       </ul> </li> 
     </ul> 
    </div> 
    <h1 id="-v100-"> <a name="user-content--v100-" href="#-v100-" class="headeranchor-link" aria-hidden="true"> <span class="headeranchor"> </span> </a> 乐客开门-家庭门锁(V1.0.0-测试场景点) </h1> 
    <hr /> 
    <h2 id="_-1"> <a name="user-content-_1" href="#_1" class="headeranchor-link" aria-hidden="true"> <span class="headeranchor"> </span> </a> 功能模块： </h2> 
    <!-- 分界线 ------------------------------------------> 
    <div class="md-modal md-effect-1" id="modal-1"> 
     <div class="md-content"> 
      <h3>新增功能模块</h3> 
      <div> 
       <p>请填写以下信息：</p> 
       <form id="contact" action="" method="post"> 
        <fieldset> 
         <input id="ModuleLink" placeholder="模块链接" type="text" tabindex="1" required="" autofocus="" /> 
        </fieldset> 
        <fieldset> 
         <input id="ModuleName" placeholder="模块名称" type="text" tabindex="2" required="" /> 
        </fieldset> 
        <fieldset> 
         <input id="Testpoints" placeholder="测试场景点" type="text" tabindex="3" required="" /> 
        </fieldset> 
        <fieldset> 
         <textarea id="picturelist" placeholder="图片地址" tabindex="5" required="" style="font-size:12.2px;"></textarea> 
        </fieldset> 
       </form> 
       <p></p> 
       <fieldset> 
        <button onclick="Demo()">示例</button> 
        <!-- <button onclick="empty()">清空</button>  -->
        <button class="md-close">取消</button> 
        <button class="md-close1" onclick="added()">确认</button> 
       </fieldset> 
      </div> 
     </div> 
    </div> 
    <div class="md-modal md-effect-2" id="modal-2"> 
     <div class="md-content"> 
      <h3>修改功能模块</h3> 
      <div> 
       <p>请填写以下信息：</p> 
       <form id="contact" action="" method="post"> 
        <fieldset> 
         <input id="ModuleLink_Update" placeholder="模块链接" type="text" tabindex="1" required="" autofocus="" /> 
        </fieldset> 
        <fieldset> 
         <input id="ModuleName_Update" placeholder="模块名称" type="text" tabindex="2" required="" style="width: 300px;float: right;"/> 
         <select id = "myCourse1_Update" onchange = "setCourse_update();" style="width: 180px;height: 38px;float: left;"> 
          <option value = "" selected>请选择...</option> 
        </select> 
        <fieldset style="display: none"> 
         <input id="ModuleCode11_Update" placeholder="模块序号" value="0" type="text" tabindex="1" required="" autofocus=""/> 
        </fieldset>
        </fieldset> 
        <fieldset> 
         <input id="Testpoints_Update" placeholder="测试场景点" type="text" tabindex="3" required="" /> 
        </fieldset> 
        <fieldset> 
         <textarea id="picturelist_Update" placeholder="图片地址" tabindex="5" required="" style="font-size:12.2px;"></textarea> 
        </fieldset> 
       </form>
       <p></p> 
       <fieldset> 
        <button onclick="empty1()">清空</button> 
        <button class="md-close">取消</button> 
        <button class="md-close1" onclick="update()">确认</button> 
       </fieldset> 
      </div> 
     </div> 
    </div> 
    <div class="md-modal md-effect-3" id="modal-3"> 
     <div class="md-content"> 
      <h3>删除功能模块</h3> 
      <div> 
       <p>请填写以下信息：</p> 
       <form id="contact" action="" method="post"> 
        <select id = "myCourse1" onchange = "setCourse();"> 
         <option value = "" selected>全部</option> 
        </select> 
        <fieldset style="display: none"> 
         <input id="ModuleCode11" placeholder="模块序号" value="0" type="text" tabindex="1" required="" autofocus=""/> 
         <!-- style="display: none"  -->
        </fieldset> 
       </form> 
       <p></p> 
       <fieldset> 
        <button class="md-close">取消</button> 
        <button class="md-close1" onclick="deleteDoc()">确认</button> 
       </fieldset> 
      </div> 
     </div> 
    </div>
    <div class="md-modal md-effect-4" id="modal-4"> 
     <div class="md-content"> 
      <h3>读取功能模块</h3> 
      <div> 
       <p>请填写以下信息：</p> 
       <input type="file" id="upload" onchange="getCourse()" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" /> 
       <select id = "myCourse" onchange = "setCourse();"> 
         <option value = "" selected>全部</option> 
       </select> 
       <form id="contact" action="" method="post""> 
        <fieldset> 
         <input id="ModuleName1" placeholder="模块名称" value="0" type="text" tabindex="1" required="" autofocus="" /> 
        </fieldset> 
       </form> 
       <p></p> 
       <fieldset> 
        <button class="md-close">取消</button> 
        <button class="md-close1" onclick="sendfile()">确认</button> 
       </fieldset> 
      </div> 
     </div> 
    </div> 
    <div class="md-modal md-effect-5" id="modal-5"> 
     <div class="md-content"> 
      <h3>保存功能模块</h3> 
      <div> 
       <p>请填写以下信息：</p> 
       <form id="contact" action="" method="post"> 
        <fieldset> 
         <input id="ModuleLink_Save" placeholder="模块链接" type="text" tabindex="1" required="" autofocus="" /> 
        </fieldset> 
        <fieldset> 
         <input id="ModuleName_Save" placeholder="模块名称" type="text" tabindex="2" required="" style="width: 300px;float: right;"/> 
         <select id = "myCourse1_Save" onchange = "setCourse_Save();" style="width: 180px;height: 38px;float: left;"> 
          <option value = "" selected>全部</option> 
        </select> 
        <fieldset style="display: none"> 
         <input id="ModuleCode11_Save" placeholder="模块序号" value="0" type="text" tabindex="1" required="" autofocus=""/> 
        </fieldset>
        </fieldset> 
        <fieldset> 
         <input id="Testpoints_Save" placeholder="测试场景点" type="text" tabindex="3" required="" /> 
        </fieldset> 
        <fieldset> 
         <textarea id="picturelist_Save" placeholder="图片地址" tabindex="5" required="" style="font-size:12.2px;"></textarea> 
        </fieldset> 
       </form>
       <p></p> 
       <fieldset> 
        <button onclick="empty2()">清空</button> 
        <button class="md-close">取消</button> 
        <button class="md-close1" onclick="Preservation()">确认</button> 
       </fieldset> 
      </div> 
     </div> 
    </div> 
    <!-- <div> 
     <button class="md-trigger" data-modal="modal-3" style="position: fixed;bottom: 55%;right: 70px;font-size: 20px;cursor: pointer">新增模块</button> 
     <button style="position: fixed;bottom: 48%;right: 70px;font-size: 20px;cursor: pointer" onclick="deleteDoc()">删除模块</button> 
     <button class="md-trigger" data-modal="modal-4" style="position: fixed;bottom: 41%;right: 70px;font-size: 20px;cursor: pointer">读取模块</button> 
     <button class="md-trigger" data-modal="modal-5" style="position: fixed;bottom: 34%;right: 70px;font-size: 20px;cursor: pointer">保存模块</button> 
    </div> --> 
    <div style="z-index: 99999;position: fixed;"> 
     <button class="md-trigger" data-modal="modal-1" style="position: fixed;bottom: 3%;right: 770px;font-size: 20px;cursor: pointer">新增模块</button> 
     <button class="md-trigger" data-modal="modal-2" style="position: fixed;bottom: 3%;right: 600px;font-size: 20px;cursor: pointer">修改模块</button> 
     <button class="md-trigger" data-modal="modal-3" style="position: fixed;bottom: 3%;right: 430px;font-size: 20px;cursor: pointer">删除模块</button> 
     <button class="md-trigger" data-modal="modal-4" style="position: fixed;bottom: 3%;right: 260px;font-size: 20px;cursor: pointer">读取模块</button> 
     <button class="md-trigger" data-modal="modal-5" style="position: fixed;bottom: 3%;right: 90px;font-size: 20px;cursor: pointer">保存模块</button> 
    </div>
    <div class='ModularList'>
    </div>
   </article> 
<script>
   var i=0;
   var d=0; 
   var u=0; 
   var isAdd=0; 
   var ModuleLink;
   var ModuleName;
   var Testpoints;
   var PictureName = "carousel";
   var PictureID = "image";
   var PictureList;
   var TestDate;
   var ModuleArry1 = [];
   var ModuleArry = [];
   var allArry =[];
   var singleArry =[];
   var ModularListArray=new Array(100);
   var DoclistListArray=new Array(100);

  function Demo(){
  ModuleLink = document.getElementById("ModuleLink").value='https://alipic.lanhuapp.com/SketchCoverf0707de649e522dd7bc39b0d9df53f11';
  ModuleName = document.getElementById("ModuleName").value='一. 登录界面';
  Testpoints = document.getElementById("Testpoints").value='手机号丨获取验证码丨更换手机号丨登录';
  PictureList = document.getElementById("picturelist").value='https://alipic.lanhuapp.com/SketchCoverf0707de649e522dd7bc39b0d9df53f11;\n\
https://alipic.lanhuapp.com/SketchCovercf54277e2d0660988116f469deabd793;\n\
https://alipic.lanhuapp.com/SketchCover979a9a34c8fef816021131377887e1a6;\n\
https://alipic.lanhuapp.com/SketchCoverd16e30fd89faae14eaf1a58b632f2a0e;\n\
https://alipic.lanhuapp.com/SketchCovere7d47d430bffc3ad7e0f9f4872b99cbb;\n\
https://alipic.lanhuapp.com/SketchCoverd63db353292a83b404f94fe5747f526f;\n\
https://alipic.lanhuapp.com/SketchCovere5491eba13378f8c40d9de3edba138ee;\n\
https://alipic.lanhuapp.com/SketchCover7b234c6b3e14064a19017ce6c882ab7c';
}
function empty(){
  ModuleLink = document.getElementById("ModuleLink").value='';
  ModuleName = document.getElementById("ModuleName").value='';
  Testpoints = document.getElementById("Testpoints").value='';
  PictureList = document.getElementById("picturelist").value='';
}
function empty1(){
  ModuleLink = document.getElementById("ModuleLink_Update").value='';
  ModuleName = document.getElementById("ModuleName_Update").value='';
  document.getElementById("myCourse1_Update").options[0].selected=true; 
  document.getElementById("ModuleCode11_Update").value=0;
  Testpoints = document.getElementById("Testpoints_Update").value='';
  PictureList = document.getElementById("picturelist_Update").value='';
}
function empty2(){
  ModuleLink = document.getElementById("ModuleLink_Save").value='';
  ModuleName = document.getElementById("ModuleName_Save").value='';
  document.getElementById("myCourse1_Save").options[0].selected=true; 
  document.getElementById("ModuleCode11_Save").value=0;
  Testpoints = document.getElementById("Testpoints_Save").value='';
  PictureList = document.getElementById("picturelist_Save").value='';
}
function added(){
  ModuleLink = document.getElementById("ModuleLink").value;
  ModuleName = document.getElementById("ModuleName").value;
  Testpoints = document.getElementById("Testpoints").value;
  PictureName = "carousel";
  PictureID = "image";
  PictureList = document.getElementById("picturelist").value;
  TestDate ="\
①.\n\
 ②.\n\
 ③.\n\
 ④.\n\
 ⑤.\n\
 ⑥.\n\
 ⑦.\n\
 ⑧.\n\
 ⑨.\n\
 ⑩.\n\
 ⑪.\n\
 ⑫.\n\
 ⑬.\n\
 ⑭.\n\
 ⑮.\n\
 ⑯.\n\
 ⑰.\n\
 ⑱.\n\
 ⑲.\n\
 ⑳.\n\
 ㉑.\n\
 ㉒.\n\
 ㉓.\n\
 ㉔.\n\
 ㉕.\n\
 ㉖.\n\
 ㉗.\n\
 ㉘.\n\
 ㉙.\n\
 ㉚.\n\
 ㉛.\n\
 ㉜.\n\
 ㉝.\n\
 ㉞.\n\
 ㉟.\n\
 ㊱.\n\
 ㊲.\n\
 ㊳.\n\
 ㊴.\n\
 ㊵.\n\
 ㊵.\n\
 ㊶.\n\
 ㊷.\n\
 ㊸.\n\
 ㊹.\n\
 ㊺.\n\
 ㊻.\n\
 ㊼.\n\
 ㊽.\n\
 ㊿.\
";
  // console.log(PictureList)
    if(ModuleLink==''){
      alert('请输入模块链接！')
      return true;
    }if(ModuleName==''){
      alert('请输入模块名称！')
      return true;
    }if(Testpoints==''){
      alert('请输入测试场景点！')
      return true;
    }if(PictureList==''){
      alert('请输入图片地址！')
      return true;
    }else{
  // console.log(ModuleLink+ModuleName+Testpoints+PictureName+PictureID+PictureList+StorageID)
      alert('新增成功！')
      ModuleArry1.push(ModuleName)
      // console.log(i)
      // console.log(d)
      // console.log(u)
      var _option = document.createElement("option");
      _option.value = ModuleArry1[i];
      _option.text = ModuleArry1[i];
      myCourse1.appendChild(_option);
      var _option1 = document.createElement("option");
      _option1.value = ModuleArry1[i];
      _option1.text = ModuleArry1[i];
      myCourse1_Update.appendChild(_option1);
      var _option2 = document.createElement("option");
      _option2.value = ModuleArry1[i];
      _option2.text = ModuleArry1[i];
      myCourse1_Save.appendChild(_option2);
      isAdd = 0;
      myFunction(ModuleLink,ModuleName,Testpoints,PictureName,PictureID,PictureList,TestDate)
    }
}

function update() {
    var index = document.getElementById("myCourse1_Update").selectedIndex;
    if(index==0){
      alert('请选择修改的模块！')
      return true;
    }else{
      var b = document.getElementById("ModuleCode11_Update").value;
      var textarea = "textarea";
      var textarea2 = textarea+(b-1);
      TestDate = document.getElementById(textarea2).value;
      // console.log(TestDate)

      var a ="Modular";
      var a1 ="doclist";
      var c = a+(b-1);
      var c1 = a1+(b-1);
      var Modular = document.getElementById(c);
      var doclist = document.getElementById(c1);
      var parent = document.getElementsByClassName("ModularList")[0];
      parent.removeChild(Modular);
      var nod = document.getElementById('doc'); 
      nod.removeChild(doclist);
      d--;
      
      ModuleLink = document.getElementById("ModuleLink_Update").value;
      ModuleName = document.getElementById("ModuleName_Update").value;
      Testpoints = document.getElementById("Testpoints_Update").value;
      PictureName = "carousel";
      PictureID = "image";
      PictureList = document.getElementById("picturelist_Update").value;
      // TestDate = allArry[myCourse1_Update.selectedIndex-1][4];
      
      var se = document.getElementById("myCourse1_Update");
      se.options[se.selectedIndex].value = ModuleName;
      se.options[se.selectedIndex].text = ModuleName;

      var se1 = document.getElementById("myCourse1");
      se1.options[se.selectedIndex].value = ModuleName;
      se1.options[se.selectedIndex].text = ModuleName;

      var se2 = document.getElementById("myCourse1_Save");
      se2.options[se.selectedIndex].value = ModuleName;
      se2.options[se.selectedIndex].text = ModuleName;

      alert('修改成功！')
      isAdd = 1;
      myFunction(ModuleLink,ModuleName,Testpoints,PictureName,PictureID,PictureList,TestDate)
      i=u;
      for (var q = 0; q < ModularListArray.length; q++) {
        var hh = $("#"+ModularListArray[q]);
        $("#"+ModularListArray[q]).remove();
        $(".ModularList").append(hh);
        var doc = $("#"+DoclistListArray[q]);
        $("#"+DoclistListArray[q]).remove();
        $("#doc").append(doc);
      }
    }
}
function myFunction(模块链接,模块名称,测试场景点,图片名称,图片ID,图片list,TestDate){
    singleArry = [模块链接,模块名称,测试场景点,图片list,TestDate];
    if(isAdd==0){
      i=u;
      allArry.push(singleArry);
      // console.log(allArry)
      u++;
    }else if(isAdd==1){
      i = document.getElementById("ModuleCode11_Update").value - 1;
      allArry.splice(document.getElementById("ModuleCode11_Update").value-1,1,singleArry)
    }
  // for(var i=0;i<3;i++){
     html='\
    <!--模块名称-->\
    <h3 id="_'+i+'">\
      <a id="modula'+i+'"  href='+模块链接+'>\
      '+模块名称+'\
      </a>\
    </h3>\
    <!--测试点-->\
    <h4 id="_'+i+'"> <a name="user-content-_3" href="#_3" class="headeranchor-link" aria-hidden="true"> <span class="headeranchor"> \</span> </a>\
      测试点：'+测试场景点+'\
    </h4>\
    <hr />\
    <!--轮播图-->\
    <div class="'+图片名称+''+i+'" @mouseenter="enter" @mouseleave="leave" style="float:left;margin:12px;">\
     <transition-group tag="ul" id="'+图片ID+''+i+'" name="image" enter-active-class="animated lightSpeedIn" leave-active-class="animated\ lightSpeedOut">\
      <li v-for="(image,index) in img" :key="index" v-show="index === mark"> <a href="javascript:;">\
        <img :src="image" style="border:2px outset" /> </a>\
      </li>\
     </transition-group>\
     <div class="bullet" style="margin-left: 0px;margin-bottom: -5px">\
      <span v-for="(item,index) in img.length" :class="{\'active\':index === mark}" @click="change(index)" :key="index"></span>\
     </div>\
     <div class="switch">\
      <span class="prev" @click="prev">&lt;</span>\
      <span class="next" @click="next">&gt;</span>\
     </div>\
    </div>\
    <!--测试场景用例-->\
    <textarea id="textarea'+i+'" rows="25" cols="109" style="resize:none;font-size:11pt;line-height:25px;" class="form-control" id="content">\
 '+TestDate+'\
 </textarea>\
    <!--文件查看和保存-->\
    <div align="right" style="position:relative;">\
     <!--<input type="file" id="upload" accept="text/xml" onchange="previewText()" />\
     <button id="save'+i+'" onclick="Preservation()">保存</button>-->\
    </div>\
    <hr />';
    
    // appendStyle()
    // var o = document.getElementsByClassName("markdown-body")[1];
    // // console.log(o)
    // var div = document.createElement('div');
    // div.id = 'Modular'+i;
    // div.innerHTML = html; 
    // o.appendChild(div); 

    appendStyle()
    var o = document.getElementsByClassName("markdown-body")[1];
    var ModularList = document.getElementsByClassName("ModularList")[0];

    var div = document.createElement('div');
    div.id = 'Modular'+i;
    div.innerHTML = html;

    ModularList.appendChild(div);
    o.appendChild(ModularList); 

    myFunction1(图片名称+i,图片list.split(";"),图片ID+i,d);
    appendDoc()
// }
i++;
d++;
// document.getElementById("ModuleCode11").value = i;
}
function deleteDoc(){
    var parent = document.getElementsByClassName("ModularList")[0];
    var nod = document.getElementById('doc'); 
    // console.log(parent)
    var se = document.getElementById("myCourse1");
    var se1 = document.getElementById("myCourse1_Update");
    var se2 = document.getElementById("myCourse1_Save");
    // console.log(se.options.length)
    // console.log(se.selectedIndex)
    if(se.selectedIndex==0){
      for (var e = 1; e < se.options.length; e++) {
         var a ="Modular";
         var a1 ="doclist";
         var b = e;
         var c = a+(b-1);
         var c1 = a1+(b-1);
         var Modular = document.getElementById(c);
         // console.log(Modular)
         var doclist = document.getElementById(c1);
         if(Modular==null&&doclist==null){
           continue;
         }else{
           parent.removeChild(Modular);
           nod.removeChild(doclist);  
         } 
      }
      se.options.length = 1;
      se1.options.length = 1;
      se2.options.length = 1;
      ModuleArry1.length = 0;
      allArry.length = 0;
      // console.log(se)
      // console.log(ModuleArry1)
      i=0;
      d=0;
      u=0;
    }else{
      var a ="Modular";
      var a1 ="doclist";
      var b = document.getElementById("ModuleCode11").value;
      var c = a+(b-1);
      var c1 = a1+(b-1);
      var Modular = document.getElementById(c);
      // console.log(Modular)
      var doclist = document.getElementById(c1);
      // console.log(doclist)
      if(Modular==null&&doclist==null){
        alert("该模块已删除！")
      }else{
        parent.removeChild(Modular);
        nod.removeChild(doclist);
        // se.remove(se.selectedIndex);//移除选择的项
        se.options[se.selectedIndex].style.display = "none";
        se.options[0].selected=true;  
        // se.options[se.selectedIndex].text = '已删除'; 
        // se1.remove(b);//移除选择的项
        se1.options[b].style.display = "none";
        se1.options[0].selected=true; 
        // se1.options[se.selectedIndex].text = '已删除'; 
        // se1.remove(b);//移除选择的项
        se2.options[b].style.display = "none";
        se2.options[0].selected=true; 
        // se1.options[se.selectedIndex].text = '已删除'; 
        d--;
      }
    }
    alert('删除成功！') 
    document.getElementById("ModuleLink_Update").value = '';
    document.getElementById("ModuleName_Update").value = '';
    document.getElementById("Testpoints_Update").value = '';
    document.getElementById("picturelist_Update").value = '';
    document.getElementById("ModuleLink_Save").value = '';
    document.getElementById("ModuleName_Save").value = '';
    document.getElementById("Testpoints_Save").value = '';
    document.getElementById("picturelist_Save").value = '';
    document.getElementById("ModuleCode11").value = '0';
    document.getElementById("ModuleCode11_Update").value = '0';
    document.getElementById("ModuleCode11_Save").value = '0';
    // var se = document.getElementById("myCourse1");
    // se.remove(se.selectedIndex);//移除选择的项
    // var se = document.getElementById("myCourse1");
    // se.options.length=0;//清空所有的项
    // document.getElementById("ModuleCode11").value=i;
    // document.getElementById("ModuleCode22").value = i;
}
function Refresh() {
    // var arr = new Array("Modular0","Modular1","Modular2","Modular3");
    // for (var i = 0; i < arr.length; i++) {
    // var hh = $("#"+arr[i]);
    // $("#"+arr[i]).remove();
    // $(".ModularList").append(hh);
    for (var i = 0; i < ModularListArray.length; i++) {
        var hh = $("#"+ModularListArray[i]);
        $("#"+ModularListArray[i]).remove();
        $(".ModularList").append(hh);
        var doc = $("#"+DoclistListArray[i]);
        $("#"+DoclistListArray[i]).remove();
        $("#doc").append(doc);
    }
}
function sendfile() {
   var zzexcel;
   // if(!obj.files) {
   //    return;
   //  }
   //  var f = obj.files[0];
   //  var reader = new FileReader();
   //  reader.readAsBinaryString(f);
   //  reader.onload = function(e) {
   //    var data = e.target.result;
   //    zzexcel = XLSX.read(data, {
   //      type: 'binary'
   //    });
    var file = document.querySelector('input[type=file]').files[0];
    var reader = new FileReader();
    if(file==undefined){
      alert("请先选择文件！");
    }else{
      reader.readAsBinaryString(file);
      reader.onload = function(e) {
        var data = e.target.result;
        zzexcel = XLSX.read(data, {type: 'binary'});  
        // console.log(myCourse.selectedIndex) 
        if (myCourse.selectedIndex==0) {
          var le = document.getElementById("myCourse1").length-1;
          for (var a = 0; a < zzexcel.SheetNames.length; a++) {
             ModuleLink = zzexcel.Sheets[zzexcel.SheetNames[a]].A2.v;
             ModuleName = zzexcel.Sheets[zzexcel.SheetNames[a]].A3.v;
             Testpoints = zzexcel.Sheets[zzexcel.SheetNames[a]].A4.v;
             PictureName = "carousel";
             PictureID = "image";
             PictureList = zzexcel.Sheets[zzexcel.SheetNames[a]].A5.v;
             re1 = new RegExp(";","g");
             PictureList1 = PictureList.replace(re1, ";\n");
             TestDate1 = zzexcel.Sheets[zzexcel.SheetNames[a]].A6.v.split(";").toString();
             re = new RegExp(", ","g");
             TestDate2 = TestDate1.replace(re, ";\n ");
             TestDate = TestDate2.replace(" ①", "①");
             ModuleArry1.push(ModuleName)
             var _option = document.createElement("option");
             _option.value = ModuleArry1[a+le];
             _option.text = ModuleArry1[a+le];
             myCourse1.appendChild(_option);
             var _option1 = document.createElement("option");
             _option1.value = ModuleArry1[a+le];
             _option1.text = ModuleArry1[a+le];
             myCourse1_Update.appendChild(_option1);
             var _option2 = document.createElement("option");
             _option2.value = ModuleArry1[a+le];
             _option2.text = ModuleArry1[a+le];
             myCourse1_Save.appendChild(_option2);
             isAdd = 0;
             myFunction(ModuleLink,ModuleName,Testpoints,PictureName,PictureID,PictureList1,TestDate)
          }
        }else{
             ModuleLink = zzexcel.Sheets[zzexcel.SheetNames[myCourse.selectedIndex-1]].A2.v;
             ModuleName = zzexcel.Sheets[zzexcel.SheetNames[myCourse.selectedIndex-1]].A3.v;
             Testpoints = zzexcel.Sheets[zzexcel.SheetNames[myCourse.selectedIndex-1]].A4.v;
             PictureName = "carousel";
             PictureID = "image";
             PictureList = zzexcel.Sheets[zzexcel.SheetNames[myCourse.selectedIndex-1]].A5.v;
             re1 = new RegExp(";","g");
             PictureList1 = PictureList.replace(re1, ";\n");
             TestDate1 = zzexcel.Sheets[zzexcel.SheetNames[myCourse.selectedIndex-1]].A6.v.split(";").toString();
             re = new RegExp(", ","g");
             TestDate2 = TestDate1.replace(re, ";\n ");
             TestDate = TestDate2.replace(" ①", "①");
             ModuleArry1.push(ModuleName)
             var _option = document.createElement("option");
             _option.value = ModuleArry1[i];
             _option.text = ModuleArry1[i];
             myCourse1.appendChild(_option);
             var _option1 = document.createElement("option");
             _option1.value = ModuleArry1[i];
             _option1.text = ModuleArry1[i];
             myCourse1_Update.appendChild(_option1);
             var _option2 = document.createElement("option");
             _option2.value = ModuleArry1[i];
             _option2.text = ModuleArry1[i];
             myCourse1_Save.appendChild(_option2);
             isAdd = 0;
             myFunction(ModuleLink,ModuleName,Testpoints,PictureName,PictureID,PictureList1,TestDate)
          }
        }
        alert('读取成功！') 
    }
}
function getCourse(){ 
    var zzexcel;
    var file = document.querySelector('input[type=file]').files[0];
    var reader = new FileReader();
    if(file==undefined){
      alert("请先选择文件！");
    }else{
      var se = document.getElementById("myCourse");
      se.options.length=1;
      // console.log(se.options.length)
      reader.readAsBinaryString(file);
      reader.onload = function(e) {
        var data = e.target.result;
        zzexcel = XLSX.read(data, {type: 'binary'});  
        for (var i = 0; i < zzexcel.SheetNames.length; i++) {
          ModuleArry.push(zzexcel.SheetNames[i]);
          var _option = document.createElement("option");
          _option.value = ModuleArry[i];
          _option.text = ModuleArry[i];
          myCourse.appendChild(_option);
        }
      }
    }
} 
function setCourse(){ 
   document.getElementById("ModuleName1").value = myCourse.selectedIndex;
   document.getElementById("ModuleCode11").value = myCourse1.selectedIndex;
   document.getElementById("ModuleCode11_Update").value = myCourse1_Update.selectedIndex;
   document.getElementById("ModuleCode11_Save").value = myCourse1_Save.selectedIndex;
   // console.log(myCourse.selectedIndex) 
   // console.log(myCourse.value) 
}
function setCourse_update(){ 
  document.getElementById("ModuleCode11_Update").value = myCourse1_Update.selectedIndex;
  if(myCourse1_Update.selectedIndex!=0){
    document.getElementById("ModuleLink_Update").value = allArry[myCourse1_Update.selectedIndex-1][0];
    document.getElementById("ModuleName_Update").value = allArry[myCourse1_Update.selectedIndex-1][1];
    document.getElementById("Testpoints_Update").value = allArry[myCourse1_Update.selectedIndex-1][2];
    document.getElementById("picturelist_Update").value = allArry[myCourse1_Update.selectedIndex-1][3];
  }else{
    document.getElementById("ModuleLink_Update").value = '';
    document.getElementById("ModuleName_Update").value = '';
    document.getElementById("Testpoints_Update").value = '';
    document.getElementById("picturelist_Update").value = '';
  }
}
function setCourse_Save(){ 
  document.getElementById("ModuleCode11_Save").value = myCourse1_Save.selectedIndex;
  if(myCourse1_Save.selectedIndex!=0){
    document.getElementById("ModuleLink_Save").value = allArry[myCourse1_Save.selectedIndex-1][0];
    document.getElementById("ModuleName_Save").value = allArry[myCourse1_Save.selectedIndex-1][1];
    document.getElementById("Testpoints_Save").value = allArry[myCourse1_Save.selectedIndex-1][2];
    document.getElementById("picturelist_Save").value = allArry[myCourse1_Save.selectedIndex-1][3];
  }else{
    document.getElementById("ModuleLink_Save").value = '';
    document.getElementById("ModuleName_Save").value = '';
    document.getElementById("Testpoints_Save").value = '';
    document.getElementById("picturelist_Save").value = '';
  }
}
function Preservation1(){
  var a ="save";
  var a1 ="textarea";
  var b =document.getElementById("ModuleCode22").value;
  var c =a+(b-1);
  var c1 =a1+(b-1);
  // var Textarea = document.getElementById(c1)
  // console.log(Textarea)
  // var text = document.getElementById(c1).value;
  // console.log(text)
  // Textarea.innerHTML=text;
  if(b==""){
     alert("请填写要保存的模块序号！");
  }else if(document.getElementById(c1)==null){
      alert("请先新增模块！");
  }else{
     var Textarea = document.getElementById(c1);
     var text = document.getElementById(c1).value;
     Textarea.innerHTML=text;
     var button = document.getElementsByClassName("md-trigger");
     // button.addEventListener('click', saveTextAsFile(c1));
     saveTextAsFile(c1)
  }
}
function saveTextAsFile(c) {
  var a ="modula";
  var b =document.getElementById("ModuleCode22").value;
  var d =a+(b-1);
  ModuleLink = document.getElementById("ModuleLink").value;
  ModuleName = document.getElementById("ModuleName").value;
  Testpoints = document.getElementById("Testpoints").value;
  // PictureList = document.getElementById("picturelist").value;
  // PictureList = document.getElementById("picturelist").value.split(";");
  // var textToWrite = document.getElementById(c).value.split(";");
  PictureList1 = document.getElementById("picturelist").value;
  re = new RegExp(";\n","g");
  PictureList = PictureList1.replace(re, ";");
  textToWrite1 = document.getElementById(c).value;
  re2 = new RegExp(";\n","g");
  textToWrite = textToWrite1.replace(re2, ";");
  var savedata = ModuleLink+'\n'+ModuleName+'\n'+Testpoints+'\n'+PictureList+'\n'+textToWrite;
  var modula = document.getElementById(d).text;
  varname = modula;
  name = varname.replace(/(^\s*)|(\s*$)/g,'');
  // console.log(name)
  // data = "\ufeff" + savedata;
  data = "\ufeff" + savedata;
  var textFileAsBlob = new Blob([data],{ type: 'text/csv,charset=UTF-8' });
  var fileNameToSaveAs = name+".xls";

  var downloadLink = document.createElement("a");
  downloadLink.download = fileNameToSaveAs;
  downloadLink.innerHTML = "Download File";
  if (window.URL != null) {
    // Chrome allows the link to be clicked without actually adding it to the DOM.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
  } else {
    // Firefox requires the link to be added to the DOM before it can be clicked.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = destroyClickedElement;
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
  }
  downloadLink.click();
}
function destroyClickedElement(event) {
  // remove the link from the DOM
  document.body.removeChild(event.target);
}

function workbook2blob(workbook) {
        // 生成excel的配置项
        var wopts = {
          // 要生成的文件类型
          bookType: "xlsx",
          // // 是否生成Shared String Table，官方解释是，如果开启生成速度会下降，但在低版本IOS设备上有更好的兼容性
          bookSST: false,
          type: "binary"
        };
        var wbout = XLSX.write(workbook, wopts);
        // 将字符串转ArrayBuffer
        function s2ab(s) {
          var buf = new ArrayBuffer(s.length);
          var view = new Uint8Array(buf);
          for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xff;
          return buf;
        }
        var blob = new Blob([s2ab(wbout)], {
          type: "application/octet-stream"
        });
        return blob;
}
function openDownloadDialog(blob, fileName) {
        if (typeof blob == "object" && blob instanceof Blob) {
          blob = URL.createObjectURL(blob); // 创建blob地址
        }
        var aLink = document.createElement("a");
        aLink.href = blob;
        // HTML5新增的属性，指定保存文件名，可以不要后缀，注意，有时候 file:///模式下不会生效
        aLink.download = fileName || "";
        var event;
        if (window.MouseEvent) event = new MouseEvent("click");
        //   移动端
        else {
          event = document.createEvent("MouseEvents");
          event.initMouseEvent( "click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null );
        }
        aLink.dispatchEvent(event);
}
function Preservation(){
  var se = document.getElementById("myCourse1_Save");
  var sheetdatalist=[];
  var wb = XLSX.utils.book_new();
  if(se.selectedIndex==0){
    for (var t = 0; t < se.length-1; t++) {
      var ModuleLink = allArry[t][0];
      var ModuleName = allArry[t][1];
      var Testpoints = allArry[t][2];
      var PictureList1 = allArry[t][3];
      re = new RegExp(";\n","g");
      PictureList = PictureList1.replace(re, ";");
      var a ="textarea";
      var c = a+t;
      try{
        textToWrite1 = document.getElementById(c).value;
        re2 = new RegExp(";\n","g");
        textToWrite = textToWrite1.replace(re2, ";");
        let sheetdata = [
          // { q: "\ufeff" + ModuleLink},
          // { q: "\ufeff" + ModuleName},
          // { q: "\ufeff" + Testpoints},
          // { q: "\ufeff" + PictureList},
          // { q: "\ufeff" + textToWrite}
          { q: ModuleLink},
          { q: ModuleName},
          { q: Testpoints},
          { q: PictureList},
          { q: textToWrite}
        ];
        sheet = XLSX.utils.json_to_sheet(sheetdata);
        sheetdatalist.push(sheet)
        try{
          XLSX.utils.book_append_sheet(wb, sheetdatalist[t], ModuleName);
        }catch(err){
          alert("【"+ModuleName+"】模块重复 ==>> 已修改为【"+ModuleName+"("+t+")】");
          XLSX.utils.book_append_sheet(wb, sheetdatalist[t], ModuleName+"("+t+")");
        }
      }catch(err){
        sheetdatalist.push("已删除");
        continue;
      }
    }
    // console.log(sheetdatalist)
    workbookBlob = workbook2blob(wb);
    openDownloadDialog(workbookBlob, "测试场景点.xlsx");  
  }else{
    var b =document.getElementById("ModuleCode11_Save").value;
    ModuleLink = document.getElementById("ModuleLink_Save").value;
    ModuleName = document.getElementById("ModuleName_Save").value;
    Testpoints = document.getElementById("Testpoints_Save").value;
    PictureList1 = document.getElementById("picturelist_Save").value;
    re = new RegExp(";\n","g");
    PictureList = PictureList1.replace(re, ";");
    var a ="textarea";
    var c =a+(b-1);
    textToWrite1 = document.getElementById(c).value;
    re2 = new RegExp(";\n","g");
    textToWrite = textToWrite1.replace(re2, ";");
    let sheet1data = [
      { q: ModuleLink},
      { q: ModuleName},
      { q: Testpoints},
      { q: PictureList},
      { q: textToWrite}
    ];
    var sheet1 = XLSX.utils.json_to_sheet(sheet1data);
    var wb = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(wb, sheet1, ModuleName);
    const workbookBlob = workbook2blob(wb);
    openDownloadDialog(workbookBlob, ModuleName+".xlsx");
  }
}

function appendDoc(){
  var nod = document.getElementById('doc'); 
    str = '\
        <li id="doclist'+i+'"> <a href="#_'+(i)+'"> '+ModuleName+' </a>\
          <ul>\
            <li> \
              <a href="#_'+i+'"> \
                测试点：'+Testpoints+'\
              </a> \
            </li>\
          </ul> \
        </li>';
    // console.log(nod)
    $(nod).append(str);
    //滑动至顶部
    // window.scrollTo(document.body.scrollHeight,0);
    //滑动至底部
    window.scrollTo(0,document.body.scrollHeight);
}
function appendStyle(){
  var nod = document.getElementById('style'); 
    str = '\
        .carousel'+i+'{\
            background-color: #2A2A2A;\
            width: 350px;\
            height: 626px;\
            top: -12px;\
            left: 0px;\
            overflow: hidden;\
            margin: 100px auto;\
            position: relative;\
        }\
        .carousel'+i+' ul{\
            width: 100%;\
            height: 100%;\
        }\
        .carousel'+i+' ul li{\
            left: -2px;\
            position: absolute;\
        }\
        .carousel'+i+' ul li a img{\
            width: 355px;\
            height: 626px;\
            left: 100px;\
        }';
    // console.log(nod)
    // nod.innerHTML = str;
    nod.appendChild(document.createTextNode(str)); 
}
function myFunction1(carousel,图片list,image,bullet){
      var vm = new Vue({
        el:"."+carousel+"",
        data:{
            mark:0,
            img:图片list,
            time:null
        },
        methods:{   //添加方法
            change(i){
                this.mark = i;
            },
            prev(){
                this.mark--;
                if(this.mark === -1){
                    this.mark = 图片list.length-1;
                    return
                }
            },
            next(){
                this.mark++;
                if(this.mark === 图片list.length){
                    this.mark = 0;
                    return
                }
            },
            autoPlay(){
                this.mark++;
                if(this.mark === 图片list.length){
                    this.mark = 0;
                    return
                }
            },
            play(){
                // this.time = setInterval(this.autoPlay,3000);
            },
            enter(){
                clearInterval(this.time);
            },
            leave(){
                this.play();
            }
        },
        created(){
            this.play()
        }
    })
    myFunction2(image,bullet); 
 }     
function myFunction2(image,bullet){
      // console.log(bullet)
      var objul= document.getElementById(image)
      var lis = objul.getElementsByTagName("li").length;
      // console.log(lis);
      var b = (348-(lis*25-15))/2;
      // console.log(b);
      var tag = document.getElementsByClassName("bullet")[bullet]
      // console.log(tag)
      if(lis<=Math.round(348/25)){
        tag.style['margin-left'] = b +"px";
      }else{
        tag.style['margin-left'] = "6.5px";
      }
}
//预览文字
function previewText() {
  var a ="textarea";
  // var b =document.getElementById("ModuleCode11").value;
  var c =a+(b-1);
        var file = document.querySelector('input[type=file]').files[0];
        console.log(file)
        var reader = new FileReader();
        if(file==undefined){
         alert("请先选择文件！");
        }else if(b==""){
         alert("请填写要保存的模块序号！");
        }else if(document.getElementById(c)==null){
          alert("请先新增模块！");
        }else{
          reader.onloadend = function(oFREvent) {
          var pointsTxt = oFREvent.target.result;
          document.getElementById(c).value = pointsTxt;
          };
          if (file) {
          reader.readAsText(file, "utf-8"); //csv txt
          // alert("读取成功！")
          }
        }
        // alert(pointsTxt)
        // console.log(pointsTxt);a
      }
for(var a=0;a<ModularListArray.length;a++){
  ModularListArray[a] = 'Modular'+a;
  DoclistListArray[a] = 'doclist'+a;
}
// console.log(ModularListArray)
</script> 
<script type="text/javascript">
  document.oncontextmenu=function(){return false;}
document.onkeydown=function(event){
var e = event || window.event || arguments.callee.caller.arguments[0];
if(e && e.keyCode==116){
return false;
}
}
</script>
   <!-- classie.js by @desandro: https://github.com/desandro/classie --> 
   <script src="js/classie.js"></script> 
   <script src="js/modalEffects.js"></script> 
   <!-- for the blur effect --> 
   <!-- by @derSchepp https://github.com/Schepp/CSS-Filters-Polyfill --> 
   <script>
      // this is important for IEs
      var polyfilter_scriptpath = '/js/';
    </script> 
   <script src="js/cssParser.js"></script> 
   <script src="js/css-filters-polyfill.js"></script>  
  </article>
 </body>
</html>